home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-04-21 | 1.7 KB | 80 lines | [TEXT/CWIE] |
- unit MyVersionResource;
-
- interface
-
- uses
- Types;
-
- {$PUSH}
- {$ALIGN MAC68K}
-
- type
- versionRecord = packed record
- numericVersion: NumVersion;
- countryCode: integer;
- shortVersion: Str15;
- longVersion: Str255;
- name: Str63;
- end;
-
- {$ALIGN RESET}
- {$POP}
-
- procedure GetVersion (resfile: integer; var vers: versionRecord);
- procedure SetVersionParamText (resfile: integer; c3: Str255);
-
- implementation
-
- uses
- Resources, Memory, Dialogs, MyStrings;
-
- procedure GetVersion (resfile: integer; var vers: versionRecord);
- var
- vh: Handle;
- p: integer;
- saved_resfile: integer;
- begin
- saved_resfile := CurResFile;
- UseResFile( resfile );
-
- vh := Get1Resource('vers', 1);
- if vh = nil then begin
- longint(vers.numericVersion) := $00002000;
- vers.countryCode := 0;
- vers.shortVersion := '0.0.0';
- vers.longVersion := 'Unknown v0.0.0';
- vers.name := 'Unknown';
- end else begin
- BlockMoveData(vh^, @vers, sizeof(vers));
- BlockMoveData(Ptr(longint(vh^) + (longint(@vers.shortVersion) - longint(@vers)) + length(vers.shortVersion) + 1),
- @vers.longVersion, sizeof(vers.longVersion));
- if length(vers.shortVersion) >= sizeof(vers.shortVersion) then begin
- {$PUSH}
- {$R-}
- vers.shortVersion[0] := chr(sizeof(vers.shortVersion) - 1);
- {$POP}
- end;
- ReleaseResource(vh);
- end;
- p := Pos(vers.shortVersion, vers.longVersion);
- while (p > 0) & (vers.longVersion[p] <> ' ') do begin
- p := p - 1;
- end;
- p := p - 1;
- if p < 1 then begin
- p := 255;
- end;
- vers.name := TPcopy(vers.longVersion, 1, p);
-
- UseResFile( saved_resfile );
- end;
-
- procedure SetVersionParamText (resfile: integer; c3: Str255);
- var
- vers: versionRecord;
- begin
- GetVersion(resfile, vers);
- ParamText(vers.shortVersion, vers.longVersion, vers.name, c3);
- end;
-
- end.